home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 November / Chip_1999-11_cd.bin / zkuste / MacOS / DATA / FILES / POWER64.HQX / Power64 2.5.1 / Power64 2.5.1 - Read Me.rsrc / TEXT_141.txt < prev    next >
Text File  |  1999-09-20  |  3KB  |  95 lines

  1. Appendix D : Emulator Detection - Where am I?
  2.  
  3. Writers of software on the C64 or emulators may wish to know whether the "machine" their code is executing on is a real C64, or not (e.g. for disabling fastloaders). Wolfgang Lorenz, the author or PC64, suggested a method that reveals the type of emulator based on a special use of the addresses $DFA0-$DFFF. See the following listing for details.
  4.  
  5. If you want to test this program on Power64, just copy the text from this document and paste it into an open Power64 emulator window. Power64 will respond with the following message:
  6.  
  7.           Power64 (2.5.1)
  8.  Commodore 64 for Power Macintosh
  9.       (C) 1999 Roland Lieger
  10.  
  11. If the emulator detection awareness of Power64 should cause trouble with a program it can be disabled using the Options/ROM Patches dialog.
  12.  
  13. 100 REM ********* WHERE AM I? *********
  14. 110 REM -------------------------------
  15. 120 REM THIS IS THE RECOMMENDED METHOD
  16. 130 REM HOW TO DETECT A C64 EMULATOR,
  17. 140 REM E.G. FOR DISABLING FAST LOADERS
  18. 150 REM
  19. 160 REM - THE BYTE AT $DFFF CHANGES
  20. 170 REM   BETWEEN $55 AND $AA ON EVERY
  21. 180 REM   READ ACCESS
  22. 190 REM - THE BYTE AT $DFFE CONTAINS
  23. 200 REM   THE MANUFACTURER CODE LETTER:
  24. 210 REM   A = C64ALIVE
  25. 220 REM   F = FRODO
  26. 230 REM   P = PERSONAL C64
  27. 240 REM   S = C64 SOFTWARE EMULATOR
  28. 250 REM   V = VICE
  29. 260 REM   X = X64
  30. 270 REM   / = POWER64
  31. 280 REM - THE WORD AT $DFFC CONTAINS
  32. 290 REM   THE EMULATOR VERSION NUMBER,
  33. 300 REM   E.G. $0120 FOR VERSION 1.2
  34. 310 REM - THE BYTES FROM $DFA0 CONTAIN
  35. 320 REM   A COPYRIGHT STRING WITH
  36. 330 REM   EMULATOR NAME AND VERSION,
  37. 340 REM   $0D, COPYRIGHT AND $00.
  38. 350 REM -------------------------------
  39. 360 :
  40. 500 PRINT
  41. 510 X=57343: REM $DFFF
  42. 520 IF PEEK(X)<>85 THEN IF PEEK(X)<>85 THEN 1000
  43. 530 IF PEEK(X)<>170 THEN 1000
  44. 540 IF PEEK(X)<>85  THEN 1000
  45. 550 IF PEEK(X)<>170 THEN 1000
  46. 560 M$=CHR$(PEEK(57342)): REM $DFFE
  47. 570 PRINT "MANUFACTURER = '"; M$; "' ";
  48. 580 IF M$="A" THEN PRINT "(C64ALIVE)";
  49. 590 IF M$="F" THEN PRINT "(FRODO)";
  50. 600 IF M$="P" THEN PRINT "(PC64)";
  51. 610 IF M$="S" THEN PRINT "(C64S)";
  52. 620 IF M$="V" THEN PRINT "(VICE)";
  53. 630 IF M$="X" THEN PRINT "(X64)";
  54. 640 IF M$="/" THEN PRINT "(POWER64)";
  55. 650 PRINT
  56. 660 :
  57. 700 V=PEEK(57341)*256 + PEEK(57340): REM $DFFD/$DFFC
  58. 710 H$="0123456789ABCDEF"
  59. 720 FOR I=0 TO 3
  60. 730 V$=MID$(H$,1+(V AND 15),1)+V$
  61. 740 V=INT(V/16)
  62. 750 NEXT
  63. 760 PRINT "VERSION = $";V$
  64. 770 PRINT
  65. 780 :
  66. 800 I=57248: REM $DFA0
  67. 810 X=PEEK(I)
  68. 820 IF X=0 THEN PRINT: END
  69. 830 PRINT CHR$(X);
  70. 840 I=I+1
  71. 850 GOTO 810
  72. 860 :
  73. 900 REM -------------------------------
  74. 910 REM THESE ARE MANUFACTURER-SPECIFIC
  75. 920 REM WORKAROUNDS, WHICH SHOULD BE
  76. 930 REM REPLACED WITH THE OFFICIAL
  77. 940 REM EMULATOR DETECTION METHOD
  78. 950 :
  79. 1000 IF PEEK(60682)<>0 THEN 1100: REM $ED0A
  80. 1010 PRINT "C64 SOFTWARE EMULATOR"
  81. 1020 PRINT "(C)1991-94 MIHA PETERNEL"
  82. 1030 END
  83. 1040 :
  84. 1100 IF PEEK(60736)<>0 THEN 1200: REM $ED40
  85. 1110 PRINT "X64 (VERSION 1 OR 2)"
  86. 1120 PRINT "(C)1993-94 J.SONNINEN/T.RANTANEN/J.VALTA"
  87. 1130 END
  88. 1140 :
  89. 1200 X=57087: REM $DEFF
  90. 1210 IF PEEK(X)+PEEK(X)+PEEK(X)<>0 THEN 2000
  91. 1220 PRINT "C64ALIVE"
  92. 1230 PRINT "(C)1993-94 F.LITTMANN DEVELOPMENTS"
  93. 1240 END
  94. 1250 :
  95. 2000 PRINT "THIS IS AN ORIGINAL C64 OR C128"